﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Threading.Tasks;

namespace FinanceAPI.Model
{
    /// <summary>
    /// 凭证表
    /// </summary>
    [Serializable]
    [Description("凭证表")]
    [Table("Pd_Vourcher")]
    public class PdEntityVourcher : AggregateRoot
    {
        public PdEntityVourcher()
        {
            凭证辅助账 = new HashSet<凭证辅助账>();
        }
        /// <summary>
        /// 集团代码
        /// </summary>
        [MaxLength(50)]
        public string 集团代码 { get; set; }
        /// <summary>
        /// 集团名称
        /// </summary>
        [MaxLength(100)]
        public string 集团名称 { get; set; }

        public string 公司唯一代码 { get; set; }

        public string 凭证ID { get; set; }

        public bool 借贷方向 { get; set; }

        public int 分录序号 { get; set; }

        public decimal 借方金额 { get; set; }

        public DateTime 录入日期 { get; set; }

        public string 凭证类型 { get; set; }

        public string 公司名称 { get; set; }

        public decimal 贷方金额 { get; set; }

        public string 币别 { get; set; }

        public string 汇率 { get; set; }

        public string 凭证号 { get; set; }

        public string 公司编码 { get; set; }

        public string 科目名称 { get; set; }

        public DateTime 记账日期 { get; set; }

        public DateTime 业务日期 { get; set; }

        public string 摘要 { get; set; }

        public ICollection<凭证辅助账> 凭证辅助账 { get; set; }

        public string 科目代码 { get; set; }

        public bool? 是否修改 { get; set; }

        public decimal 原币金额 { get; set; }

        public int 会计期间 { get; set; }

        /// <summary>
        /// 科目分类
        /// </summary>
        [MaxLength(100)]
        public string 科目分类 { get; set; }

        public bool 流入资金 { get; set; }
    }

    [Serializable]
    [Description("凭证辅助账")]
    [Table("Pd_Vourcher_Subsidiary")]
    public class 凭证辅助账 : AggregateRoot
    {
        public 凭证辅助账()
        {
            核算项 = new HashSet<核算项>();
        }
        public Guid PdEntityVourcherId { get; set; }

        public PdEntityVourcher PdEntityVourcher { get; set; }

        public int 辅助账序号 { get; set; }

        public ICollection<核算项> 核算项 { get; set; }

        public decimal 原币金额 { get; set; }
    }

    [Serializable]
    [Description("核算项")]
    [Table("Pd_Vourcher_Check_Account")]
    public class 核算项 : AggregateRoot
    {
        public Guid 凭证辅助账ID { get; set; }

        [ForeignKey("凭证辅助账ID")]
        public 凭证辅助账 凭证辅助账 { get; set; }

        public string 核算项目 { get; set; }

        public string 名称 { get; set; }

        public string 编码 { get; set; }
    }


    #region 保留
    //public class PdEntityVourcher: AggregateRoot
    //{
    //  //  public Guid VourcherId { get; set; } = Guid.NewGuid();

    //    /// <summary>
    //    /// 集团代码
    //    /// </summary>
    //    [MaxLength(50)]
    //    public string GroupId { get; set; }

    //    /// <summary>
    //    /// 集团名称
    //    /// </summary>
    //    [MaxLength(100)]
    //    public string GroupName { get; set; }

    //    /// <summary>
    //    /// 公司代码
    //    /// </summary>
    //    [MaxLength(50)]
    //    public string CompanyCode { get; set; }

    //    /// <summary>
    //    /// 公司名称
    //    /// </summary>
    //    [MaxLength(100)]
    //    public string CompanyName { get; set; }

    //    /// <summary>
    //    /// 公司唯一代码
    //    /// </summary>
    //    [MaxLength(50)]
    //    public string CompanyUniqueCode { get; set; }

    //    /// <summary>
    //    /// 凭证序列号
    //    /// </summary>
    //    [MaxLength(50)]
    //    public string VourcherSqNo { get; set; }

    //    /// <summary>
    //    /// 记账日期
    //    /// </summary>
    //    public DateTime PostingDate { get; set; }

    //    /// <summary>
    //    /// 业务日期
    //    /// </summary>
    //    public DateTime BusinessDate { get; set; }

    //    /// <summary>
    //    /// 录入时间
    //    /// </summary>
    //    public DateTime EntryDate { get; set; }

    //    /// <summary>
    //    /// 会计期间
    //    /// </summary>
    //    public int PostingPriod { get; set; }

    //    /// <summary>
    //    /// 凭证类型
    //    /// </summary>
    //    [MaxLength(100)]
    //    public string VourcherType { get; set; }

    //    /// <summary>
    //    /// 凭证号
    //    /// </summary>
    //    [MaxLength(30)]
    //    public string VourcherNo { get; set; }

    //    /// <summary>
    //    /// 分录号
    //    /// </summary>
    //    public int EntryNo { get; set; }

    //    /// <summary>
    //    /// 凭证摘要
    //    /// </summary>
    //    [MaxLength(250)]
    //    public string VourcherSummary { get; set; }

    //    /// <summary>
    //    /// 凭证科目
    //    /// </summary>
    //    [MaxLength(80)]
    //    public string VourcherSubject { get; set; }

    //    /// <summary>
    //    /// 科目名称
    //    /// </summary>
    //    [MaxLength(100)]
    //    public string SubjectName { get; set; }

    //    /// <summary>
    //    /// 货币
    //    /// </summary>
    //    [MaxLength(10)]
    //    public string Currency { get; set; }

    //    /// <summary>
    //    /// 汇率
    //    /// </summary>
    //    [MaxLength(5)]
    //    public string ExchangeRate { get; set; }

    //    /// <summary>
    //    /// 金额方向是否是贷方
    //    /// </summary>
    //    public bool IsCredit { get; set; }

    //    /// <summary>
    //    /// 原币金额
    //    /// </summary>
    //    public decimal Amount { get; set; }

    //    /// <summary>
    //    /// 借方金额
    //    /// </summary>
    //    public decimal AmountDebit { get; set; }

    //    /// <summary>
    //    /// 贷方金额
    //    /// </summary>
    //    public decimal AmountCredit { get; set; }

    //    /// <summary>
    //    /// 是否修改过
    //    /// </summary>
    //    public bool IsModify { get; set; }

    //    /// <summary>
    //    /// 辅助账集合
    //    /// </summary>
    //    public ICollection<SubsidiaryAccount> Subsidiarys { get; set; }

    //    /// <summary>
    //    /// 科目分类
    //    /// </summary>
    //    [MaxLength(100)]
    //    public string SujectType { get; set; }

    //    /// <summary>
    //    /// 是否是流入资金
    //    /// </summary>
    //    public bool AmountFlow { get; set; }

    //}

    //public class SubsidiaryAccount : AggregateRoot
    //{
    //    /// <summary>
    //    /// 辅助账序号
    //    /// </summary>
    //    [MaxLength(50)]
    //    public int SubsidiarySqNo { get; set; }

    //    /// <summary>
    //    /// 核算项明细
    //    /// </summary>
    //    public List<核算项> 核算项 { get; set; }


    //    public int 原币金额 { get; set; }
    //}


    //public class 核算项
    //{
    //    public string 核算项目 { get; set; }

    //    public string 名称 { get; set; }

    //    public string 编码 { get; set; }
    //}
    #endregion

    public class JsonData
    {
        public string GroupCode { get; set; }

        public string GroupName { get; set; }

        public string Vourchers { get; set; }

        public string Balances { get; set; }

        public string Remark { get; set; }
    }

    public class NewCompute
    {
        public DateTime? StartDate { get; set; }

        public DateTime? EndDate { get; set; }

       

    }

}
